//
//  ProductInfoHandle.h
//  sensen_ios
//
//  Created by pro on 16/3/9.
//  Copyright © 2016年 pro. All rights reserved.
//

#import <Foundation/Foundation.h>

// 商品详情
#import "ByNetProductDetailModel.h"


#pragma mark - 规格模块的类
// 商品规格数据类，所有规格数据 保存在 ProductDetailModel 的skuAry 数组下，
#import "SkuModel.h"

// 详情的所有规格
#import "SkuIdModel.h"
#import "SkuNameModel.h"

// 分组规格选择model，用于记录，一个model对应一个分组，记录分组的选择状态，以及选择位置
#import "SkuCellSelectModel.h"



/*
 详情数据处理类
 */
@interface ProductInfoHandle : NSObject

#pragma mark - 规格模块的辅助方法
// 获取点击的单元格对应的skuId（如1：1）
+ (NSString *)getCurrCollectSkuId:(NSIndexPath *)indexPath skuIdModel:(SkuIdModel *)model;

// 没有选择某组中某单元格（规格）时数组的保存东西（即未赋值的）
+ (NSString *)getDefaultNoIDString;

// 获得除了当前点击的组以为的其他组的选中数组
+ (NSArray *)getSelectSkuIDList:(NSArray *)skuIDArray except:(NSInteger)section;


// selectedSkuIdAry:是除了未赋值的所有skuId的数组
// 而_skuSelectIdArray是包含了未赋值的所有的skuId的数组
// 根据_skuSelectIdArray来获得 selectedSkuIdAry
+ (NSArray *)getSelectedSkuIdAry:(NSArray *)skuSelectIdArray;

/**
 *  判断当前选中的规格项是否能拼接成完成的商品规格id（sku_id）
 *
 *  @param selectedSkuIdArray 选中的skuId数组（里面可能包含正确的skuid(1：1)，也可能包含未赋值的）
 *  @param complete           判断完成后回调
 *  @param noSelectAry        返回没有选中的组索引的数组
 */
+ (void)isUseableSkuIdArray:(NSArray *)selectedSkuIdArray
                   complete:(void(^)(BOOL isable))complete
                noSelectAry:(void(^)(NSArray *notSeletSectionArray))noSelectAry;

// 根据已选的单元格预测 对应于section的那组的单元格是否可以点击
+ (void)forecastSkuIdIsable:(ByNetProductDetailModel *)detailProdtInfo
           selectedSkuIdAry:(NSArray *)selectSkuIDArray
                    section:(NSInteger)section
               disAbleBlock:(void (^)(NSArray *))disTouchSkuIDArray;

// 根据选中的id 字符串拼接完整的sku_id （比如选中的是48:134 49:135，即数组中有两个元素则拼接成 48:134;49:135）
+ (NSString *)getFullSkuId:(NSArray *)selectIdAry ;

// 根据完整的sku_id 从商品数组（skuAry）中找到该商品，并返回
+ (SkuModel *)findSkuModelInSkuAry:(NSArray<SkuModel *> *)skuAry fullSkuId:(NSString *)fullId;




@end
